# coding=utf-8
"""
code 模板
**##..

** 为服务（server）级别的编号，一个服务一个编号。大家通用的错误编号从0开始，或者小于六位
## 为应用/资源（APP)级别的编号
.. 具体的错误编号

注意，这里的所有错误都是为了从很深的函数调用栈快速返回到视图层，并返回结果。
所以可以不能遇见的错误，不能在这里定义，能预见到的错误，都应该被定义出来。
所有希望被报警的错误，都应该使用log.error或其他的错误类。

错误码创建的逻辑是，错误码统一在这个文件下声明，具体的错误类声明在各个app下
"""


class StandardErrorRecord:
    def __init__(self, code, detail):
        self.code = code
        self.detail = detail


SER = StandardErrorRecord


class ErrorRecord:
    SUCCESS = SER(200, '成功')
    NOTFOUND = SER(404, '莫须有的页面')

    NOT_DEFINED = SER(1000, '未定义的错误')
    NOT_LOGIN = SER(1001, '未登录')
    MISS_REQUIRED_PARAM = SER(1002, '缺少必要参数或参数错误')
    REQUEST_THROTTLED = SER(1003, '请求过于频繁')
    RESOURCE_EXISTED_ERROR = SER(1004, '资源已存在')
    RESOURCE_NOT_EXIST_ERROR = SER(1005, '资源不存在')
    ACCESS_TOKEN_ERROR = SER(1006, '不被允许的渠道-不可访问')
    NEED_REDIRT_ERROR = SER(1007, '不可直接访问')
    SEND_EMAIL_ERROR = SER(1008, '发送邮件失败')
    NETWORK_ERROR = SER(1009, '网络错误')
    DB_ERROR = SER(1010, '服务器出小差了')
    EMPTY_CONTENT = SER(1011, '内容不能为空哦')
    PERMISSION_DENIED = SER(1012, '没有权限')
    PHONE_REQUIRE = SER(1013, '请先绑定手机号~')

    # user
    REPEATED_USERNAME = SER(110101, '该用户名已存在')
    CONFIRM_PASSWORD_FAIL = SER(110102, '密码不一致')
    WRONG_PASSWORD = SER(110103, '密码错误')


ER = ErrorRecord
